package main

import (
	"fmt"
	"log"
	
	"example.com/go-multi-demo/internal/models"
	"example.com/go-multi-demo/internal/utils"
	"example.com/go-multi-demo/pkg/calculator"
	"example.com/go-multi-demo/api/handlers"
)

func main() {
	fmt.Println("🚀 Go 多文件多目录示例程序启动")
	log.Println("程序开始执行")
	
	// 使用 utils 包
	fmt.Println("\n📦 使用 utils 包:")
	str := "Hello, World!"
	fmt.Printf("原始字符串: %s\n", str)
	fmt.Printf("反转后: %s\n", utils.ReverseString(str))
	fmt.Printf("5 + 3 = %d\n", utils.Add(5, 3))
	
	// 使用 models 包
	fmt.Println("\n👥 使用 models 包:")
	user := models.NewUser("张三", 25, "zhangsan@example.com")
	fmt.Printf("用户: %s, 年龄: %d, 邮箱: %s\n", user.Name, user.Age, user.Email)
	
	product := models.Product{
		Name:  "Go编程指南",
		Price: 99.99,
		SKU:   "BOOK-001",
	}
	fmt.Printf("产品: %s, 价格: %.2f, SKU: %s\n", product.Name, product.Price, product.SKU)
	
	// 使用 calculator 包
	fmt.Println("\n🧮 使用 calculator 包:")
	fmt.Printf("10 + 5 = %d\n", calculator.Add(10, 5))
	fmt.Printf("10 - 5 = %d\n", calculator.Subtract(10, 5))
	fmt.Printf("10 * 5 = %d\n", calculator.Multiply(10, 5))
	fmt.Printf("10 / 5 = %d\n", calculator.Divide(10, 5))
	
	// 使用 handlers 包
	fmt.Println("\n🌐 使用 handlers 包:")
	userHandler := handlers.UserHandler{}
	userHandler.GetUser(1)
	
	productHandler := handlers.ProductHandler{}
	productHandler.GetProduct("BOOK-001")
	
	fmt.Println("\n✅ 所有功能演示完成!")
}